/*
 * tsymbol.h
 *
 *  Created on: Jan 10, 2016
 *      Author: root
 */

#ifndef FUNNY_SCHEME_SYMBOL_H
#define FUNNY_SCHEME_SYMBOL_H

#include "../ds/datastructure.h"

#define KEYWORD_LAMBDA    "lambda"
#define KEYWORD_QUOTE     "quote"
#define KEYWORD_THIS      "*this*"

Cell *cell_lambda;
Cell *cell_quote;
Cell *cell_this;
Cell *cell_feed_to;

DEFINE_OPERATOR( make_symbol       );
DEFINE_OPERATOR( symbol_to_string  );
DEFINE_OPERATOR( defp  );
INIT_OPERATORS( symbol );

Cell* make_symbol(Scheme *sc, const char *name);
char *symbol_name(Cell* sym);
void init_symbol_constants(Scheme *sc);

#endif //FUNNY_SCHEME_SYMBOL_H
